public class Test04 {
    public String multiply(String num1, String num2) {
        int m = num1.length(), n = num2.length();
        char[] n1 = new StringBuffer(num1).reverse().toString().toCharArray();
        char[] n2 = new StringBuffer(num2).reverse().toString().toCharArray();
        int[] ret = new int[m + n ];  // 修正数组大小

        // 无进制相乘
        for(int i = 0; i < m ;i++){
            for(int j = 0; j < n; j++){
                ret[i + j] += (n1[i] - '0') * (n2[j] - '0');  // 加上乘积
            }
        }

        // 处理进位并生成字符串
        int tmp = 0;
        StringBuffer sb = new StringBuffer();
        for(int i = 0; i < m + n; i++){
            tmp += ret[i];  // 加上之前的进位
            sb.append(tmp % 10);  // 当前位
            tmp /= 10;  // 更新进位
        }

        // 删除前导零
        while(sb.length() > 1 && sb.charAt(sb.length() - 1) == '0'){
            sb.deleteCharAt(sb.length() - 1);
        }

        // 翻转并返回最终结果
        return sb.reverse().toString();

    }
}
